from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget,QApplication, QMessageBox,QLineEdit
from PyQt5.QtGui import QPixmap
import sys  # 导入 sys 库
import time  # 导入 time 库
import win32gui  # 导入 win32gui 库

from package.Utils.MainWindow import mywinutils,img_relative_path
from package.ui.QT_BasicSetWindow import Ui_Dialog  # 导入Ui_Dialog类(QT设计师创建)
from package.Utils.User_Thread import mythread  # 导入 mythread 对象(python代码)
from package.Utils.Screen import screen,filter   # 导入 screen 对象(python代码)
from package.Utils.log import logger,mylog  # 导入 logger 对象(python代码)
from package.Utils.config import config_obj  # 导入 config_obj 对象(python代码)

class MyBasicSetWindow(QWidget, Ui_Dialog): # 继承 QWidget类和 Ui_Dialog界面类
    def __init__(self, parent=None):
        super(MyBasicSetWindow, self).__init__(parent)
        self.setupUi(self)  # 初始化界面

        if mylog.log_enabled is True:
            self.checkBox_LogChoose.setChecked(True)  # 日志记录复选框默认勾选
        else:
            self.checkBox_LogChoose.setChecked(False)  # 日志记录复选框默认不勾选

        self.lineEdit.installEventFilter(filter) # 安装键盘过滤器
        self.lineEdit.setPlaceholderText(" 输入文本或按下快捷键（如 Ctrl+A）")  # 设置提示文本
        self.lineEdit_hwnd.setPlaceholderText(" 请点击 获取窗口句柄按钮 获取窗口句柄")  # 设置提示文本

        self.setWindowFlags(Qt.WindowStaysOnTopHint)  # 窗口置顶

    def accept(self):
        if mylog.log_enabled is True:
            logger.info("退出基础设置界面")  # 记录日志
        self.close()  # 关闭窗口

    def click_pushButton_Save(self):
        mywinutils.Shortcut_key = self.lineEdit.text()  # 获取输入的快捷键
        if mywinutils.Shortcut_key.find('+') != -1:
            mywinutils.Shortcut_key_list = mywinutils.Shortcut_key.split('+')  # 将快捷键字符串分割为列表
            mywinutils.Shortcut_key_list[1] = mywinutils.Shortcut_key_list[1].lower()  # 将快捷键列表第二个元素转为小写
        else:
            mywinutils.Shortcut_key = ''
            mywinutils.Shortcut_key_list = []  # 如果没有输入快捷键，则列表为空
            self.lineEdit.clear()   # 清空输入框
        try:
            mywinutils.hwnd = int(self.lineEdit_hwnd.text())  # 尝试将句柄文本转换为整数
            logger.info(f"句柄为{mywinutils.hwnd}")  # 记录日志
        except ValueError:
            mywinutils.hwnd = 0  # 如果转换失败，设置为 0
            self.lineEdit_hwnd.clear()
            logger.info("句柄为空或非数字")  # 记录日志

        if mylog.log_enabled is True:
            if mywinutils.Shortcut_key == '':
                logger.info("快捷键不能为空！")  # 记录日志
            else:
                logger.info(f"快捷键为：{mywinutils.Shortcut_key}")  # 记录日志
        if mylog.log_enabled is True:
            logger.info("保存成功！")  # 记录日志

        #保存配置
        config_obj.config_text['HotKey'] = mywinutils.Shortcut_key# 保存配置
        config_obj.config_text['log_Enable'] = mylog.log_enabled  # 保存配置
        config_obj.config_text['hwnd'] = mywinutils.hwnd  # 保存窗口句柄
        config_obj.config_text['Time_H'] = mywinutils.Time_H  # 保存配置
        config_obj.config_text['Time_M'] = mywinutils.Time_M  # 保存配置
        config_obj.write(config_obj.config_text)

        self.close()  # 关闭窗口

    #单击 日志记录 复选框
    def click_checkBox_LogChoose(self):
        if self.checkBox_LogChoose.isChecked():
            mylog.log_enabled = True
            logger.info('日志记录已开启')
        else:
            mylog.log_enabled = False
            logger.info('日志记录已关闭')

    def click_pushButton_hwnd(self):
        """启动捕获模式"""
        self.is_capturing  = True
        self.lineEdit_hwnd.setPlaceholderText(" 捕获模式已激活：请点击目标窗口")  # 设置提示文本
        if self.checkBox_LogChoose.isChecked():
            mylog.log_enabled = True
            logger.info('捕获模式已激活：请点击目标窗口')

        mythread.Start()  # 启动线程(启动捕获模式)

